// Tencent is pleased to support the open source community by making
// 蓝鲸智云 - 监控平台/日志平台 (BlueKing - Monitor/Log) available.
// Copyright (C) 2017-2022 THL A29 Limited, a Tencent company. All rights reserved.
// Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at http://opensource.org/licenses/MIT
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//

package sampler

import "github.com/TencentBlueKing/bk-collector/define"

const (
	DropperNoop   = "noop"
	DropperRandom = "random"
)

func SwitchDropper(c Config) Dropper {
	switch c.Type {
	case DropperRandom:
		return RandomDropper(c)
	case DropperNoop:
		return NoopDropper()
	}
	return NoopDropper()
}

type Dropper interface {
	Drop(record *define.Record)
}

// NoopDropper

func NoopDropper() Dropper {
	return noopDropper{}
}

type noopDropper struct{}

func (noopDropper) Drop(_ *define.Record) {}
